package model.parser;
import java.util.ArrayList;

import model.ladron.Ladron;
import model.lugares.Ciudad;
import model.parser.objetos.IParseadorObjetos;
import model.parser.objetos.ParserObjetosComunes;
import model.parser.objetos.ParserObjetosMuyValiosos;
import model.parser.objetos.ParserObjetosValiosos;
import model.parser.pistas.IParseadorPistas;
import model.parser.pistas.ParserPistasDificiles;
import model.parser.pistas.ParserPistasFaciles;
import model.parser.pistas.ParserPistasMedio;
import model.parser.pistas.ParserPistasNoSe;
import model.policia.Policia;

public class ParserXML implements FachadaParser{
	
	private static ParserXML INSTANCIA = null;
	 
	private ParserCiudades ciudadesParser = new ParserCiudades();
	private ParserLadron ladronParser = new ParserLadron();
	private ParserPartida partidaParser = new ParserPartida();
	
	private IParseadorObjetos objetosComunParser = new ParserObjetosComunes();
	private IParseadorObjetos objetosValiosoParser = new ParserObjetosValiosos();
	private IParseadorObjetos objetosMuyValiosoParser = new ParserObjetosMuyValiosos();
	
	private IParseadorPistas pistasFacilesParser = new ParserPistasFaciles();
	private IParseadorPistas pistasMediosParser = new ParserPistasMedio();
	private IParseadorPistas pistasDificilesParser = new ParserPistasDificiles();
	private IParseadorPistas pistasNoSeParser = new ParserPistasNoSe();

	
	private ParserXML(){
	}
	
	public static ParserXML getInstancia(){
		if (INSTANCIA == null)
			INSTANCIA = new ParserXML();
        return INSTANCIA;
	}
	
	@Override
	public String getNombreCiudadNumero(int i) {
		return ciudadesParser.getNombreCiudadNumero(i);
	}

	@Override
	public int getCantidadCiudades() {
		return ciudadesParser.getCantidadCiudades();
	}

	@Override
	public Ciudad getCiudadPorNombre(String nombreCiudad) {
		return ciudadesParser.getCiudadPorNombre(nombreCiudad);
	}

	@Override
	public Ciudad getCiudadNumero(int i) {
		return ciudadesParser.getCiudadNumero(i);
	}

	@Override
	public Ladron obtenerLadron(String nombreLadron) {
		return ladronParser.obtenerLadron(nombreLadron);
	}

	@Override
	public Ladron obtenerLadronRandom() {
		return ladronParser.obtenerLadronRandom();
	}

	@Override
	public ArrayList<String> obtenerNombresLadronesPorAtributos(String sexo,
			String cabello, String hobby, String senia, String vehiculo) {
		return ladronParser.obtenerNombresLadronesPorAtributos(sexo, cabello, hobby, senia, vehiculo);
	}

	@Override
	public Policia cargarPoliciaPorNombre(String nombrePolicia) {
		return partidaParser.cargarPoliciaPorNombre(nombrePolicia);
	}

	@Override
	public void guardarArrestosAPolicia(Policia policia) {
		partidaParser.guardarArrestosAPoliciaEnXML(policia);
	}

	@Override
	public IParseadorObjetos getParseadorObjComunes() {
		return objetosComunParser;
	}

	@Override
	public IParseadorObjetos getParseadorObjValiosos() {
		return objetosValiosoParser;
	}

	@Override
	public IParseadorObjetos getParseadorObjMuyValiosos() {
		return objetosMuyValiosoParser;
	}

	@Override
	public IParseadorPistas getParseadorPistasFaciles() {
		return pistasFacilesParser;
	}

	@Override
	public IParseadorPistas getParseadorPistasMedio() {
		return pistasMediosParser;
	}

	@Override
	public IParseadorPistas getParseadorPistasDificiles() {
		return pistasDificilesParser;
	}

	@Override
	public IParseadorPistas getParsadorPistasNoSe() {
		return pistasNoSeParser;
	}
	
}
